class Solution {
public:
    void sortColors(vector<int>& nums) 
    {
        //划分区间
        //[0,left]都是0
        //[left+1,i]都是1
        //[i+1,right-1]没有便利的元素
        //[right,n-1]是2的区域
        int left=-1,right=nums.size(),i=0;
        for(i=0;i<right;)
        {
            if(nums[i]==0)
            {
                swap(nums[i++],nums[++left]);
             
            }
            else if(nums[i]==1)
            {
                i++;
            }
            else
            {
                swap(nums[i],nums[--right]);
            }
        }
    }
};